0 CpxTRS
↳1 DependencyGraphProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxTRS
↳3 NestedDefinedSymbolProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTRS
↳5 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CpxWeightedTrs
↳7 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedTrs
↳9 CompletionProof (UPPER BOUND(ID), 0 ms)
↳10 CpxTypedWeightedCompleteTrs
↳11 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 CpxTypedWeightedCompleteTrs
↳13 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳14 CpxRNTS
↳15 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳16 CpxRNTS
↳17 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 223 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 9 ms)
↳22 CpxRNTS
↳23 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 58 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 28 ms)
↳28 CpxRNTS
↳29 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳30 CpxRNTS
↳31 IntTrsBoundProof (UPPER BOUND(ID), 106 ms)
↳32 CpxRNTS
↳33 IntTrsBoundProof (UPPER BOUND(ID), 97 ms)
↳34 CpxRNTS
↳35 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳36 CpxRNTS
↳37 IntTrsBoundProof (UPPER BOUND(ID), 192 ms)
↳38 CpxRNTS
↳39 IntTrsBoundProof (UPPER BOUND(ID), 49 ms)
↳40 CpxRNTS
↳41 FinalProof (⇔, 0 ms)
↳42 BOUNDS(1, n^1)
rec(rec(x)) → sent(rec(x))
rec(sent(x)) → sent(rec(x))
rec(no(x)) → sent(rec(x))
rec(bot) → up(sent(bot))
rec(up(x)) → up(rec(x))
sent(up(x)) → up(sent(x))
no(up(x)) → up(no(x))
top(rec(up(x))) → top(check(rec(x)))
top(sent(up(x))) → top(check(rec(x)))
top(no(up(x))) → top(check(rec(x)))
check(up(x)) → up(check(x))
check(sent(x)) → sent(check(x))
check(rec(x)) → rec(check(x))
check(no(x)) → no(check(x))
check(no(x)) → no(x)
check(no(x)) → no(x)
rec(sent(x)) → sent(rec(x))
check(sent(x)) → sent(check(x))
check(up(x)) → up(check(x))
rec(bot) → up(sent(bot))
rec(up(x)) → up(rec(x))
rec(rec(x)) → sent(rec(x))
check(no(x)) → no(check(x))
no(up(x)) → up(no(x))
rec(no(x)) → sent(rec(x))
sent(up(x)) → up(sent(x))
check(rec(x)) → rec(check(x))
check(up(x)) → up(check(x))
rec(bot) → up(sent(bot))
rec(up(x)) → up(rec(x))
no(up(x)) → up(no(x))
sent(up(x)) → up(sent(x))
check(up(x)) → up(check(x)) [1]
rec(bot) → up(sent(bot)) [1]
rec(up(x)) → up(rec(x)) [1]
no(up(x)) → up(no(x)) [1]
sent(up(x)) → up(sent(x)) [1]
check(up(x)) → up(check(x)) [1]
rec(bot) → up(sent(bot)) [1]
rec(up(x)) → up(rec(x)) [1]
no(up(x)) → up(no(x)) [1]
sent(up(x)) → up(sent(x)) [1]
check :: up:bot → up:bot up :: up:bot → up:bot rec :: up:bot → up:bot bot :: up:bot sent :: up:bot → up:bot no :: up:bot → up:bot |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
check
rec
no
sent
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
bot => 0
check(z) -{ 1 }→ 1 + check(x) :|: x >= 0, z = 1 + x
no(z) -{ 1 }→ 1 + no(x) :|: x >= 0, z = 1 + x
rec(z) -{ 1 }→ 1 + sent(0) :|: z = 0
rec(z) -{ 1 }→ 1 + rec(x) :|: x >= 0, z = 1 + x
sent(z) -{ 1 }→ 1 + sent(x) :|: x >= 0, z = 1 + x
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + sent(0) :|: z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ 1 }→ 1 + sent(z - 1) :|: z - 1 >= 0
{ sent } { check } { no } { rec } |
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + sent(0) :|: z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ 1 }→ 1 + sent(z - 1) :|: z - 1 >= 0
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + sent(0) :|: z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ 1 }→ 1 + sent(z - 1) :|: z - 1 >= 0
sent: runtime: ?, size: O(1) [0] |
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + sent(0) :|: z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ 1 }→ 1 + sent(z - 1) :|: z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] |
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] |
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: ?, size: O(1) [0] |
check(z) -{ 1 }→ 1 + check(z - 1) :|: z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] |
check(z) -{ z }→ 1 + s'' :|: s'' >= 0, s'' <= 0, z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] |
check(z) -{ z }→ 1 + s'' :|: s'' >= 0, s'' <= 0, z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] no: runtime: ?, size: O(1) [0] |
check(z) -{ z }→ 1 + s'' :|: s'' >= 0, s'' <= 0, z - 1 >= 0
no(z) -{ 1 }→ 1 + no(z - 1) :|: z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] no: runtime: O(n1) [z], size: O(1) [0] |
check(z) -{ z }→ 1 + s'' :|: s'' >= 0, s'' <= 0, z - 1 >= 0
no(z) -{ z }→ 1 + s1 :|: s1 >= 0, s1 <= 0, z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] no: runtime: O(n1) [z], size: O(1) [0] |
check(z) -{ z }→ 1 + s'' :|: s'' >= 0, s'' <= 0, z - 1 >= 0
no(z) -{ z }→ 1 + s1 :|: s1 >= 0, s1 <= 0, z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] no: runtime: O(n1) [z], size: O(1) [0] rec: runtime: ?, size: O(n1) [1 + z] |
check(z) -{ z }→ 1 + s'' :|: s'' >= 0, s'' <= 0, z - 1 >= 0
no(z) -{ z }→ 1 + s1 :|: s1 >= 0, s1 <= 0, z - 1 >= 0
rec(z) -{ 1 }→ 1 + s :|: s >= 0, s <= 0, z = 0
rec(z) -{ 1 }→ 1 + rec(z - 1) :|: z - 1 >= 0
sent(z) -{ z }→ 1 + s' :|: s' >= 0, s' <= 0, z - 1 >= 0
sent: runtime: O(n1) [z], size: O(1) [0] check: runtime: O(n1) [z], size: O(1) [0] no: runtime: O(n1) [z], size: O(1) [0] rec: runtime: O(n1) [1 + z], size: O(n1) [1 + z] |